package com.example;

import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.Parent;
import javafx.scene.Scene;
import javafx.scene.control.Button;
import javafx.scene.layout.AnchorPane;
import javafx.stage.Stage;
import java.io.IOException;
import javafx.scene.Node;
import javafx.scene.control.Label;

// 管理员界面控制器
public class AdminController {

    @FXML
    private Button backButton;
    @FXML
    private AnchorPane contentArea;

    private Stage primaryStage;

    public void setPrimaryStage(Stage primaryStage) {
        this.primaryStage = primaryStage;
    }

    // 用户管理相关方法
    @FXML
    private void handleUserManagement() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("AdminUserManagement.fxml"));
            Parent root = loader.load();
            
            // 获取用户管理控制器并存储 (如果需要)
            // AdminUserManagementController adminUserManagementController = loader.getController();
            // 可以将AdminController自身传递给AdminUserManagementController (如果需要)
            // adminUserManagementController.setAdminController(this);

            // 清除之前的内容并加载用户管理界面
            contentArea.getChildren().clear();
            contentArea.getChildren().add(root);

            // 更新主界面的标题
            if (primaryStage != null) {
                primaryStage.setTitle("管理员界面 - 用户管理");
            }
        } catch (IOException e) {
            e.printStackTrace();
            // 在加载失败时显示错误信息
            contentArea.getChildren().clear();
            contentArea.getChildren().add(new Label("加载用户管理界面失败。"));
        } catch (Exception e) {
             e.printStackTrace();
             // 捕获其他可能的异常
             contentArea.getChildren().clear();
             contentArea.getChildren().add(new Label("加载用户管理界面时发生错误。"));
        }
    }

    @FXML
    private void handleResetPassword() {
        loadSubScene("AdminResetPassword.fxml", "重置用户密码");
    }

    // 基础数据维护相关方法
    @FXML
    private void handleDepartmentManagement() {
        loadSubScene("AdminDepartmentManagement.fxml", "院系、专业、班级管理");
    }

    @FXML
    private void handleCourseManagement() {
        loadSubScene("AdminCourseManagement.fxml", "课程库维护");
    }

    @FXML
    private void handleSemesterManagement() {
        loadSubScene("AdminSemesterManagement.fxml", "学期信息管理");
    }

    // 权限管理相关方法
    @FXML
    private void handleRoleManagement() {
        loadSubScene("AdminRoleManagement.fxml", "用户角色管理");
    }

    // 返回登录界面
    @FXML
    private void handleBackButton() {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource("Login.fxml"));
            Parent root = loader.load();
            
            LoginController loginController = loader.getController();
            Stage stage = (Stage) backButton.getScene().getWindow();
            loginController.setPrimaryStage(stage);
            
            Scene scene = new Scene(root);
            stage.setTitle("登录");
            stage.setScene(scene);
            stage.show();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    // 加载子场景的通用方法 (现在用于不需要特定控制器交互的子界面)
    private void loadSubScene(String fxmlFile, String title) {
        try {
            FXMLLoader loader = new FXMLLoader(getClass().getResource(fxmlFile));
            Parent root = loader.load();

            contentArea.getChildren().clear();
            contentArea.getChildren().add(root);

            if (primaryStage != null) {
                primaryStage.setTitle("管理员界面 - " + title);
            }
        } catch (Exception e) {
            e.printStackTrace();
            contentArea.getChildren().clear();
            contentArea.getChildren().add(new javafx.scene.control.Label(title + "功能正在开发中..."));
        }
    }
} 